upload multiple files in codeigniter

44

    private function upload_files($path, $title, $files)
    {
        $config = array(
            'upload_path'   => $path,
            'allowed_types' => 'jpg|gif|png',
            'overwrite'     => 1,                       
        );

        $this->load->library('upload', $config);

        $images = array();

        foreach ($files['name'] as $key => $image) {
            $_FILES['images[]']['name']= $files['name'][$key];
            $_FILES['images[]']['type']= $files['type'][$key];
            $_FILES['images[]']['tmp_name']= $files['tmp_name'][$key];
            $_FILES['images[]']['error']= $files['error'][$key];
            $_FILES['images[]']['size']= $files['size'][$key];

            $fileName = $title .'_'. $image;

            $images[] = $fileName;

            $config['file_name'] = $fileName;

            $this->upload->initialize($config);

            if ($this->upload->do_upload('images[]')) {
                $this->upload->data();
            } else {
                return false;
            }
        }

        return $images;
    }
if($this->input->post('Submit')){

//-----------Image File Section Start Here -----------//

 $config['upload_path'] = './uploads/';   // Directory 
$config['allowed_types'] = 'jpg|jpeg|bmp|png';  //type of images allowed
$config['max_size'] = '30720';   //Max Size
$config['encrypt_name'] = TRUE;   // For unique image name at a time

$this->load->library('upload', $config);  //File Uploading library
$this->upload->do_upload('userfile');  // input name which have to upload 
$video_upload=$this->upload->data();   //variable which store the path

//--------------End of Image File  Section------------------------//



//---------Thumbnail Image Upload Section Start Here -----------//

$config2['upload_path'] = './thumb/';   // Directory 
$config2['allowed_types'] = 'jpg|jpeg|bmp|png'; //type of images allowed
$config2['max_size'] = '30720';   //Max Size
$config2['encrypt_name'] = TRUE;   // For unique image name at a time


$this->upload->initialize($config2); //we can not use upload library again and again it will not initialize again and again so thats why i have used initialize 
$this->upload->do_upload('txt_thumb');  // File Name
$thumbnail_upload=$this->upload->data(); // store the name of the file 

//--------End of Thumbnail Upload Section-----------//



    $date=date("d-m-Y");  // Store current date in variable 

   // Here the database query to insert

    $data = array(
    'parent_id'=> $this->input->post('txt_parent'),
    'cat_id' => $this->input->post('txt_category'),
    'title'=> $this->input->post('txt_title'),
    'status' => $this->input->post('txt_status'),
    'featured' => $thumbnail_upload['file_name'],
    'image' => $video_upload['file_name'],
    'time'=>$date
    );

       $sql_ins= $this->Insimage->insertimage($data);
       if($sql_ins)
       {
           $data['Success'] = "Image has been succesfully inserted!!";
       }
views
---------

<?php echo validation_errors();?>
<?php echo form_open_multipart('pages/multiple_files');?>
<p><input type="file" multiple="multiple" name="image_name[]" class="form-control" /></p>

<input type="submit" class="btn btn-success btn-block"/> 
</form>

Controller
----------

public function multiple_files(){
  $this->load->library('upload');
  $image = array();
  $ImageCount = count($_FILES['image_name']['name']);
        for($i = 0; $i < $ImageCount; $i++){
            $_FILES['file']['name']       = $_FILES['image_name']['name'][$i];
            $_FILES['file']['type']       = $_FILES['image_name']['type'][$i];
            $_FILES['file']['tmp_name']   = $_FILES['image_name']['tmp_name'][$i];
            $_FILES['file']['error']      = $_FILES['image_name']['error'][$i];
            $_FILES['file']['size']       = $_FILES['image_name']['size'][$i];

            // File upload configuration
            $uploadPath = './assets/images/profiles/';
            $config['upload_path'] = $uploadPath;
            $config['allowed_types'] = 'jpg|jpeg|png|gif';

            // Load and initialize upload library
            $this->load->library('upload', $config);
            $this->upload->initialize($config);

            // Upload file to server
            if($this->upload->do_upload('file')){
                // Uploaded file data
                $imageData = $this->upload->data();
                 $uploadImgData[$i]['image_name'] = $imageData['file_name'];

            }
        }
         if(!empty($uploadImgData)){
            // Insert files data into the database
            $this->pages_model->multiple_images($uploadImgData);              
        }
  }
  
Model
---------
  public function multiple_images($image = array()){

     return $this->db->insert_batch('profile_images',$image);
             }

Comments

Submit
0 Comments